/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package EA_Model.IEC61970.Generation.GenerationDynamics;

import EA_Model.IEC61970.Domain.ActivePower;
import EA_Model.IEC61970.Domain.PU;
import EA_Model.IEC61970.Domain.RotationSpeed;
import EA_Model.IEC61970.Domain.Seconds;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Hydro Turbine</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getGateRateLimit <em>Gate Rate Limit</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getGateUpperLimit <em>Gate Upper Limit</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getMaxHeadMaxP <em>Max Head Max P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getMinHeadMaxP <em>Min Head Max P</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getSpeedRating <em>Speed Rating</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getSpeedRegulation <em>Speed Regulation</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTransientDroopTime <em>Transient Droop Time</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTransientRegulation <em>Transient Regulation</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTurbineRating <em>Turbine Rating</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTurbineType <em>Turbine Type</em>}</li>
 *   <li>{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getWaterStartingTime <em>Water Starting Time</em>}</li>
 * </ul>
 * </p>
 *
 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine()
 * @model
 * @generated
 */
public interface HydroTurbine extends PrimeMover {
	/**
	 * Returns the value of the '<em><b>Gate Rate Limit</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Gate Rate Limit</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Gate Rate Limit</em>' reference.
	 * @see #setGateRateLimit(EA_Model.IEC61970.Domain.Float)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_GateRateLimit()
	 * @model ordered="false"
	 * @generated
	 */
	EA_Model.IEC61970.Domain.Float getGateRateLimit();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getGateRateLimit <em>Gate Rate Limit</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Gate Rate Limit</em>' reference.
	 * @see #getGateRateLimit()
	 * @generated
	 */
	void setGateRateLimit(EA_Model.IEC61970.Domain.Float value);

	/**
	 * Returns the value of the '<em><b>Gate Upper Limit</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Gate Upper Limit</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Gate Upper Limit</em>' reference.
	 * @see #setGateUpperLimit(PU)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_GateUpperLimit()
	 * @model ordered="false"
	 * @generated
	 */
	PU getGateUpperLimit();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getGateUpperLimit <em>Gate Upper Limit</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Gate Upper Limit</em>' reference.
	 * @see #getGateUpperLimit()
	 * @generated
	 */
	void setGateUpperLimit(PU value);

	/**
	 * Returns the value of the '<em><b>Max Head Max P</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Max Head Max P</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Max Head Max P</em>' reference.
	 * @see #setMaxHeadMaxP(ActivePower)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_MaxHeadMaxP()
	 * @model ordered="false"
	 * @generated
	 */
	ActivePower getMaxHeadMaxP();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getMaxHeadMaxP <em>Max Head Max P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Max Head Max P</em>' reference.
	 * @see #getMaxHeadMaxP()
	 * @generated
	 */
	void setMaxHeadMaxP(ActivePower value);

	/**
	 * Returns the value of the '<em><b>Min Head Max P</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Min Head Max P</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Min Head Max P</em>' reference.
	 * @see #setMinHeadMaxP(ActivePower)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_MinHeadMaxP()
	 * @model ordered="false"
	 * @generated
	 */
	ActivePower getMinHeadMaxP();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getMinHeadMaxP <em>Min Head Max P</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Min Head Max P</em>' reference.
	 * @see #getMinHeadMaxP()
	 * @generated
	 */
	void setMinHeadMaxP(ActivePower value);

	/**
	 * Returns the value of the '<em><b>Speed Rating</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Speed Rating</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Speed Rating</em>' reference.
	 * @see #setSpeedRating(RotationSpeed)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_SpeedRating()
	 * @model ordered="false"
	 * @generated
	 */
	RotationSpeed getSpeedRating();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getSpeedRating <em>Speed Rating</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Speed Rating</em>' reference.
	 * @see #getSpeedRating()
	 * @generated
	 */
	void setSpeedRating(RotationSpeed value);

	/**
	 * Returns the value of the '<em><b>Speed Regulation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Speed Regulation</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Speed Regulation</em>' reference.
	 * @see #setSpeedRegulation(PU)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_SpeedRegulation()
	 * @model ordered="false"
	 * @generated
	 */
	PU getSpeedRegulation();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getSpeedRegulation <em>Speed Regulation</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Speed Regulation</em>' reference.
	 * @see #getSpeedRegulation()
	 * @generated
	 */
	void setSpeedRegulation(PU value);

	/**
	 * Returns the value of the '<em><b>Transient Droop Time</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Transient Droop Time</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Transient Droop Time</em>' reference.
	 * @see #setTransientDroopTime(Seconds)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_TransientDroopTime()
	 * @model ordered="false"
	 * @generated
	 */
	Seconds getTransientDroopTime();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTransientDroopTime <em>Transient Droop Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Transient Droop Time</em>' reference.
	 * @see #getTransientDroopTime()
	 * @generated
	 */
	void setTransientDroopTime(Seconds value);

	/**
	 * Returns the value of the '<em><b>Transient Regulation</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Transient Regulation</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Transient Regulation</em>' reference.
	 * @see #setTransientRegulation(PU)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_TransientRegulation()
	 * @model ordered="false"
	 * @generated
	 */
	PU getTransientRegulation();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTransientRegulation <em>Transient Regulation</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Transient Regulation</em>' reference.
	 * @see #getTransientRegulation()
	 * @generated
	 */
	void setTransientRegulation(PU value);

	/**
	 * Returns the value of the '<em><b>Turbine Rating</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Turbine Rating</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Turbine Rating</em>' reference.
	 * @see #setTurbineRating(ActivePower)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_TurbineRating()
	 * @model ordered="false"
	 * @generated
	 */
	ActivePower getTurbineRating();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTurbineRating <em>Turbine Rating</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Turbine Rating</em>' reference.
	 * @see #getTurbineRating()
	 * @generated
	 */
	void setTurbineRating(ActivePower value);

	/**
	 * Returns the value of the '<em><b>Turbine Type</b></em>' attribute.
	 * The literals are from the enumeration {@link EA_Model.IEC61970.Generation.GenerationDynamics.TurbineType}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Turbine Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Turbine Type</em>' attribute.
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.TurbineType
	 * @see #setTurbineType(TurbineType)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_TurbineType()
	 * @model ordered="false"
	 * @generated
	 */
	TurbineType getTurbineType();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getTurbineType <em>Turbine Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Turbine Type</em>' attribute.
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.TurbineType
	 * @see #getTurbineType()
	 * @generated
	 */
	void setTurbineType(TurbineType value);

	/**
	 * Returns the value of the '<em><b>Water Starting Time</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Water Starting Time</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Water Starting Time</em>' reference.
	 * @see #setWaterStartingTime(Seconds)
	 * @see EA_Model.IEC61970.Generation.GenerationDynamics.GenerationDynamicsPackage#getHydroTurbine_WaterStartingTime()
	 * @model ordered="false"
	 * @generated
	 */
	Seconds getWaterStartingTime();

	/**
	 * Sets the value of the '{@link EA_Model.IEC61970.Generation.GenerationDynamics.HydroTurbine#getWaterStartingTime <em>Water Starting Time</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Water Starting Time</em>' reference.
	 * @see #getWaterStartingTime()
	 * @generated
	 */
	void setWaterStartingTime(Seconds value);

} // HydroTurbine
